package com.rory.gooday.common.cron4j;

import com.jfinal.plugin.cron4j.ITask;
import com.jfinal.plugin.redis.Redis;

import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class SendMemorialTask implements ITask {

    @Override
    public void run() {
        LocalDateTime now = LocalDateTime.now();
        long timestampInt =  now.atZone(ZoneId.systemDefault()).toEpochSecond();
        Redis.call(jedis -> {
            Set<String> keys = jedis.keys("jnr:"+now.getYear()+now.getMonthValue()+":*");
            for (String key : keys) {
                String stime = key.split(":")[2];
                if (Math.abs(timestampInt - Long.parseLong(stime)) < 60){
                    String value = jedis.get(key);
                    System.out.println(value);
                }else{
                    String value = jedis.get(key);
                    System.out.println(key);
                }

            }
            return 0;
        });
        //            // 预先获取当前时间，避免在循环中重复调用

//            for(LocalDateTime t : a){
//                // 使用更精确的时间比较，检查是否在下一分钟内到期
//                long minutesBetween = ChronoUnit.SECONDS.between(now, t);
//                if(minutesBetween < 60){
//                    // todo 发送信息并继续处理其他任务（原代码使用break只处理第一个）
//                    // 如果业务确实只需要处理第一个匹配项，请添加详细注释说明原因
//
//                }
//            }
    }

    @Override
    public void stop() {


    }
}